Enable "WordWrap" from the Edit menu to view this document properly.
CONTENTS
========
LEGAL BIT AND DISCLAIMER === NEW!!
PLATFORM SUPPORT === NEW!!
INTRODUCTION
WHAT DOES MTUSPEED DO?
EFFECT OF KEYS AND CHECKBOXES
WHAT SETTINGS SHOULD I USE?
HOW TO USE THE "PING" FEATURE === NEW!!
INSTALLATION
UNINSTALLING
VERSION HISTORY
FAREWELL & CONTACT INFO
LEGAL BIT AND DISCLAIMER === NEW!!
====================================
This software is NOT freeware and it is NOT shareware. I have called it "OptionWare" which means that you have the option to pay for it or not! If you think that the time I have spent creating it has been beneficial to you then a small donation ($5 or $10) would be very acceptable. If you don't wish (or can't afford) to send a donation then you don't have to. The software is NOT crippled and is NOT time limited. That is because I CANNOT GUARANTEE that it will work for you.
I assert my right to be identified as the author of this software. It is not acceptable behaviour to disassemble or otherwise hack the executable. MTU-Speed is provided "as is" with no claims to itÆs capabilities or stability. If you do not back up your registry prior to using this software then all I can say is "donÆt blame me!". Having said that I have never had any problems with it but it is sensible to take some precautions.
***** áPLEASE BACK UP YOUR REGISTRY BEFORE USING MTUSpeed!! *****
You can use the cfgback.exe program on the Win95 CD to backup your registry.
PLATFORM SUPPORT
================
MTUSpeed is designed for Windows 95 & Memphis (English Versions only). It may work with other language versions (feedback suggests that French, German, Italian and Dutch versions are ok). It has been tested on Win95 build 950 and 950a (sometimes known as OSR1), on OSR2 and on Memphis. If it doesnÆt work, restore your registry - you did back it up didnÆt you? (Big Grin) - and e-mail me with as much info as you can including the MTUSpeed Version number from the title bar.
I am still considering a version of MTUSpeed for NT. However, the NT Winsock/DUN combination is better automated than the Win95 version; PMTUDiscovery is automatically configured and RWIN is dynamic (8192 bytes rounded up to an integer value of MSS). This may negate the requirement for an NT version. However, many people have asked for one and I may write one anyway.
INTRODUCTION
============
I wrote MTUSpeed when trying to optimise the throughput of my Internet access. I became tired of opening the registry, finding the appropriate keys, editing them and then closing the registry again. MTUSpeed was written using ideas gained from, amongst other sources, the guys at NetPro NorthWest who publish the "MaxMTU Fix for Win95" document. The document can be found at http://www.sns-access.com/%7Enetpro/maxmtu.htm. Alternative excellent sources of information are "Lynn Larrow's Place" in the US (http://www.webcom.com/~llarrow/) and Malcolm Reeves' "Win95 TCP/IP Tips and Tricks" (http://dspace.dial.pipex.com/mreeves/tips.htm) page in the UK.
I strongly suggest that you read some of these documents prior to using MTUSpeed for the first time.
Automatic PMTU (Path Maximum Transmission Unit) Discovery is discussed in Article Q158474 in Microsoft's Knowledge Base (http://www.microsoft.com/kb/default.asp is the US Site or http://www.eu.microsoft.com/kb/default.asp for the European Site). RFC 1191 is the document that covers the use of PMTUDiscovery on IPv4 and is available at http://www.graphcomp.com/info/rfc/rfc1191.html. It is also available at http://hotline.pvtnet.cz/dokumentace/rfc/rfc1191.html.
WHAT DOES MTUSPEED DO?
======================
MTUSpeed writes values to several keys in your registry. It writes:
MaxMTU = xxxx to:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\00yy (where yy ranges from 00 to 30 to cater for different setups)
(the Win95 default for xx is 0. The optimum is 16!)
The default values used by Windows are discussed in the Documents listed above.
EFFECT OF KEYS AND CHECKBOXES
=============================
When starting, MTUSpeed accesses the registry in read-only mode. The registry settings remain valid until you change them either manually or using MTUSpeed. They are not lost following a reboot. In MTUSpeed I refer to DefaultRcvWindow as RWIN so please don't get confused.
The effect of the "Basic" and "Optimise" buttons can be modified using the "Apply to all keys?" (which forces all TCP keys to have same MaxMTU value) and the "RWIN enabled by default?" checkboxes (which forces RWIN to be enabled).
With the "Apply" checkbox checked, the MaxMTU value is forced to be the same for all TCP keys listed in the dropdown box. If unchecked, only the displayed TCP key is affected by MaxMTU changes.
With the RWIN box checked, RWIN is set to "Enable" if either of the buttons are pressed. If the box is unchecked, pressing the buttons sets RWIN to "Remove". This feature was implemented so that those using TCP/IP LANs could choose whether or not to set RWIN.
If you select the "Basic Settings" Button on MTUSpeed it will DISPLAY values of MaxMTU=576, DefaultRcvWindow=2144 (if RWIN box checked), removes the "Auto", "BlackHole" and "TTL" keys and sets NDICache to 0.
If you select the "Optimum Settings" Button on MTUSpeed it will DISPLAY values of MaxMTU=576, DefaultRcvWindow=2144 (if RWIN box checked), disable the "Auto" and "BlackHole" keys, sets "TTL" to 64 and sets NDICache to 16.
You can change MaxMTU by pressing the "Change MaxMTU" Button. MTUSpeed calculates MSS by subtracting 40 from your entered value of MaxMTU. RWIN is calculated from the MSS times the Multiplier value (set by the slider) e.g., with MaxMTU=1524, MSS will be calculated as 1484 and, if the slider is set to a value of 4, then RWIN = 1484 x 4 = 5936. MTUSpeed will write MaxMTUáonly, RWIN only or MaxMTU AND RWIN values to the registry (if you enable both). The default is dependant on the state of the RWIN checbox on the "MTU Settings" page. If you elect to write one value, the other is deleted from the registry. I suggest you either write both or MaxMTU only.
If MaxMTU is set to remove, the option to set RWIN values by clicking a button is enabled. You can manually set a value in the RWIN dialog box. Setting MaxMTU to Enable will disable the RWIN Button.
If you don't want to apply any changes just close the program window and select YES in response to the dialog asking if you really want to quit.
MTUSpeed will NOT change the registry until the "Update Registry" Button is pressed. That is the only time MTUSpeed writes to the registry. It does not write to the registry on exit. Therefore, prior to selecting another TCP key from the dropdown list you should press "Update Registry" if you want the MTU settings for that key saved. With RWIN enabled, setting different MaxMTU values for different keys can cause extreme confusion as to what the RWIN value should be. Use extreme caution when doing this. The RWIN value written to the registry is the one displayed. Clicking with the right mouse button anywhere in the main window will bring up a menu.
Selecting "Remove Settings" and then pressing "Update Registry" returns the registry to the default Win95 condition.
WHAT SETTINGS SHOULD I USE?
===========================
Selecting Auto MTU Detection allows TCP to sort out an MTU for you. I have been having favourable results with this one but only occasionally. I use MaxMTU = 576, RWIN=MSSx8, "Auto" Disabled, "Black Hole" Disabled, TTL = 64 and NDI Cachesize = 16.
Alternatively, try MaxMTU and RWIN removed with BOTH Auto and Black Hole enabled. I find having MaxMTU or RWIN enabled interferes with the Auto setting but it may be different for you.
HOW TO USE THE PING FEATURE
===========================
ATTENTION
Do NOT spend hours pinging your ISP's servers as he will get annoyed with you. It is un-necessary server load and is poor etiquette. You only need to do this once to confirm the value before proceeding.
NB You MUST have ping on your computer for this function to work.
Follow these steps to find a suitable MTU: (This will be much clearer if you see the HTML help by right clicking on the program window and selecting the "HTML Help" Option)
Firstly, ask yourself "Is my line quality good?". If you get connection speeds well below the speed of your modem then you probably have a poor line. If you connect at your full modem speed most of the time you probably have a good line.
If you have a poor line you should use a small MTU. If you have a good line you should use the largest MTU you can get away with.
Choose if you have a poor or good line.
MTU on a Poor Line
------------------
1. Select your Dial-Up adapter from the dropdown box.
2. If you are not connected to a TCP LAN check the RWIN box (if it isn't already checked).
3. Press "Optimum Settings".
4. Press "Update Registry".
5. Close MTUSpeed and reboot your computer.
6. You can try increasing your MTU using the instructions in "good line" but it very possible that line noise may cause excessive resending of packets. As these packets are larger than the optimum settings you may get reduced throughput.
MTU on a Good Line
------------------
1. Select your Dial-Up adapter from the dropdown box.
2. If you are not connected to a TCP LAN check the RWIN box (if it isn't already checked).
3. Press "Optimum Settings".
4. Find out what MTU your ISP uses.
5. Press "Change MTU" or right click and select it from the menu
6. Enter your ISP's MTU in the dialog box and click OK.
7. Press "Update Registry".
8.Close MTUSpeed and reboot your computer..
9. Connect to the internet then start MTUSpeed and select the "Utilities" tab.
10. Enter your ISP's MTU in the "MTU value to test" box
11. Type an IP address or name of a one of your ISP's servers in the "Name or IP of Host to ping" box. (Use the IP address of a news or mail server or some other such suitable box such as a web server or gateway) NB not all servers are set to respond to pings.
12. Press Test MTU to see the responses. If the terminal window disappears too quickly check the ping checkbox
13. If you are informed that the "packets need to be fragmented but the Don't Fragment bit was set" then you have set the MTU too large. Either your ISP doesn't know his own MTU or else you made a mistake entering the value. Reduce the value of the MTU under test until you get proper ping responses.
14. If your ISPs MTU is different to what you initially entered you should set the new value using the instructions you used earlier and then reboot. Otherwise, continue here...
15. Having confirmed the MTU used by your ISP, it is now time to find the MTU that will suit you best for the way you use the internet and the sites you visit most frequently.
16. Connect to the Internet and, with the MTUSpeed Utility page showing, enter the correct ISP MTU in the "Name or IP" box
17. Press the "Test MTU" button and if you get ping responses all is well. If you get the "Don't Fragment Bit Set" message the site uses a smaller MTU than your ISP which means you will have to try smaller MTU's in the "MTU value to test box". (Remember, if you don't get a response it may be that the server is set to not respond to pings - www.microsoft.com is one such site)
INSTALLATION
============
Run the executable which will allow you to extract the program and text file to any directory of your choice. By default it suggests \MTUSpeed\ but you can over-ride this. Make a shortcut to the executable anywhere you want. MTUSpeed does not require DLLÆs, registry entries or an ini file in order to run. Use the shortcut to start the program having read the relevant docs first!
UNINSTALLING
============
Use the "remove settings" button to clear out your registry (if you want to). Delete the shortcut if you created one. Delete the MTUSpeed Folder. That's it !
VERSION HISTORY
===============
Version 4.03
-- The bug introduced in 4.01, which I thought I had fixed in 4.02, hadn't been fixed. I had managed to increment the search counter by 2 instead of one on each cycle so, people who had TCP in even numbered keys were OK but if TCP was registered in an odd numbered key (i.e., NetTrans\0001) would get the "Cannot find TCP error" message. Apologies to all affected.
Version 4.02
-- Some people were having problems loading the help files (using Netscape 4.04) I've changed something slightly to see if it will help.
-- Fixed a bug introduced in 4.01 when I added the Version 3.08 algorithm.
Version 4.01
-- Several people had trouble using the new Win95 TCP detection algorithm in MTUSpeed Version 4.00 (having succesfully used Version 3.08). I have therefore included both the new algorithm and the old one in Version 4.01. MTUSpeed runs the new algorithm first and, if it doesn't detect TCP, runs the old algorithm automatically without user intervention.
Version 4.00 (Release)
-- Called the program MTUSpeed Pro as opposed to MTUSpeed. This is to differentiate between the Win95 only and Win95/WinNT versions of MTUSpeed.
-- Added Modem options originally from SpeedInit program.
-- Renamed tabbed page called "Other Tweaks" to "Utilities". This now comtains a "ping" algorithm as detailed on Malcolm Reeves' web site (http://dspace.dial.pipex.com/mreeves/tips.htm).
-- Changed functionality of "Apply MTU to all keys" checkbox. It now stays enabled when selected and having selected it, you have to select Change MTU as the popup box doesn't automatically appear.
Version 4.0 beta
-- Called the program MTUSpeed Pro Beta as opposed to MTUSpeed. This is to differentiate between the Win95 only and Win95/WinNT versions of MTUSpeed.
-- Altered Operating System algorithm to allow MTUSpeed Pro to run under WinNT.
-- About box changed from being a dialog box to being on a tabbed page.
-- Added "hand" cursor to highlight email and web shortcuts on the "About" page.
-- Added New tabbed page called "Other Tweaks". Various Win95/WinNT tweaks will be added to this page.
Version 3.10
-- Changed keys from strings to stored constants in preparation for release of NT version.
-- Added ability to check for Operating System. If Win32s or WinNT is detected, this version of MTUSpeed will not run.
-- Fixed bug that prevented MTUAutoDiscover and MTUBlackHoledetect from being manually set to remove.
-- Altered some dialog boxes so that all messages are shown on one dialog instead of having 3 boxes pop up one after the other.
-- Added popup hint to highlight how the "About" box can be accessed (right click).
-- Added e-mail and website icons to the "About" box.
Version 3.09
-- Added platform identifier so as to differentiate between Win95 and Win NT versions of MTUSpeed in preparation for release of NT version.
-- Changed logic in detection algorithm which prevented Warning dialogs being displayed if no settings were found.
Version 3.08
-- Added website address to the "About" box.
-- Fixed bug introduced in version 3.07 that caused RWIN not to be removed from registry if "Remove" button pressed.
-- Fixed bug introduced in version 3.07. With the registry in the default state (nothing added) and the "RWIN enabled by default" checkbox ticked, selecting either the "Basic" or "Optimal" buttons didn't actually enable RWIN.
Version 3.07
-- Added checkbox to allow user to decide if RWIN should be enabled or disabled when the "Basic" or "Optimal" buttons are pressed.
Version 3.06
-- Added Check box to allow changes to MaxMTU to be applied to all keys simultaneously.
-- Removed bug that was present following certain button push combinations. It caused MaxMTU to be written as 0 instead of removing the key.
-- Selecting either of the "Auto" options sets MaxMTU to "Remove".
-- Implemented a second attempt to cure the "notepad starts hidded" problem experienced by some users.
Version 3.05
-- Fixed major bug which caused RWIN to be incorrectly read on program start on certain occasions.
Version 3.04
-- Corrected logic in "Optimum" and "basic" algorithms. After certain button push combinations, incorrect displays were sometimes experienced when selecting different keys from drop down list.
-- Selecting MaxMTU to "Remove" forces the MaxMTU value to 0. Reselecting "enabled" sets MaxMTU as 576 (Hey, I had to choose something <g>)
-- Added new command to Popup menu:- "Re-read Registry". This is for when you get confused as to what your settings were. Selecting it re-reads the values from the registry (before you had to close and re-open MTUSpeed to achieve the same effect)
-- Altered the way in which the "View Readme" subroutine initialised notepad. This is to try and cure a problem (experienced by users of the PanEuropean version of Win95) where notepad would start hidden!
Version 3.03
-- When RWIN is set to "Remove" the RWIN value is now displayed as 0.
-- Setting MaxMTU to "Remove" sets MaxMTU and MSS displayed values to 0.
-- When the "Update Registry" button is pressed, a "Read after Write" subroutine is now used to update the display with the values that were written to the registry.
-- Created new subroutines to remove repetitive code in certain sections.
-- Fixed bug that caused the TCP key label on the program window to disappear after a certain combination of keystrokes.
-- Reduced key search from 50 keys to 30 keys to limit memory overhead of large array allocation.
Version 3.02
-- Added label showing total number of TCP keys detected.
-- Removed Sockets option due to lack of positive feedback regarding this feature.
-- Selecting "Remove Settings" puts ALL MaxMTU keys and other settings to the "Remove" state. Previously, "Remove" had to be pressed for each MaxMTU key in turn.
Version 3.01
-- Improved logic on greying out of labels.
-- Changed "Optimum Settings" algorithm so that RWIN is set to "Remove"
-- Changed "Basic Settings" algorithm so that RWIN is set to "Remove"
Version 3.0
-- Rewrote TCP detection algorithm. Now detects all keys that hold TCP data and doesn't stop when the first key is found.
-- Added dropdown ComboBox to give access to each different key that holds TCP data.
-- ComboBox displays DriverDesc value and IP stored in key to aid identification.
-- Added ability to set a value for RWIN if MTU is disabled.
-- Added RWIN option on Button and Popup menu (greyed out if MaxaMTU enabled).
-- Fixed bug in MTU dialog which prevented MaxMTU Value being highlighted when the dialog was shown for the second time.
-- Fixed bug that caused Update Button to be enabled when OK was pressed on MTU dialog even though the MTU value hadn't changed.
Version 2.41
-- Removed some extraneous references to WebSpeed in the code aand message dialogs.
-- FAQ available on website.
Version 2.4
-- Added tabbed dialog pages to simplify interface. If you don't want to see all the radio buttons you don't have to look at them (most of them are set once and leave anyway).
-- Provided option for setting TTL (Time To Live) to increase number of hops allowed before time out (Option for selecting 32 or 64 hops on Registry Options tab).
-- Provided NDI CacheSize option to change NDI Cache setting on Registry options tab. The preferred setting is 16 but Win95 sets 0 for some reason. Setting 16 made a noticable improvement for me.
-- Altered the Optimise and Remove algorithms to account for the new additions.
-- Added popup help for most controls.
-- Changed the buttons. "Basic Settings" provides basic settings as a starting point. "Optimum Settings" provides settings which should work for most people and is what I recommend that you use. "Remove All Settings" returns the registry to the Win95 default state.
-- Moved "Update Registry" option on popup menu to the top of the menu to make it stand out more. Added entries to popup menu to correspond to the new buttons.
Version 2.3
This version is effectively WebSpeed 2.2. However, I have been forced by Progress Software Corporation to change the name from WebSpeed. Although I would have changed it if requested, I was actually left with little option. As, firstly, I cannot afford large legal bills (especially as it would have been transatlantic) and, secondly, I feel that any company is better using it's profits to improve it's services (as opposed to running legal battles) I have changed the name from WebSpeed to MTUSpeed.
Version 2.2
-- Added support for NetManage TCP stack and for any Winsock that writes either "tcp/ip" or "TCP/IP" as part of the DriverDesc Value in the NetTrans\00xx key.
-- Lower left window segment now displays which of the NetTrans\00xx keys is being displayed.
Version 2.11
-- If the NWlink "Sockets" key isn't detected, the sockets box is greyed out to prevent people messing with the setting :)
-- Fixed a bug where if "sockets" wasn't detected on startup, a value was shown in the text window and, pressing update caused the key to be unnecessarily created.
Version 2.1
-- Added "Remove All Settings" button. This sets all WebSpeed options to "remove" and sets Sockets to 255. The keys will not be removed/changed until the "Update" button is pressed.
-- Added facility to alter the number of sockets allowed from default of 255. This is for IPX protocols.
-- Pressing the defaults button now sets Sockets to 255 in addition to changing MaxMTU and RWIN.
-- If no keys are detected on startup, MaxMTU and RWIN radio buttons are set to enabled and default values of MaxMTU=576 and Multiplier=4 are allocated. (Previously the values had been set but the radio buttons were not selected.)
-- If MaxMTU isn't in the registry; the MaxMTU label is greyed out.
-- Selecting MTU enabled/removed toggles the greying out of MaxMTU.
-- If RWIN isn't in the registry; RWIN, Multiplier and MSS labels are greyed out.
-- Selecting RWIN enabled/removed toggles the greying out of RWIN, Mult and MSS.
Version 2.02
-- Corrected problem with textlabel at top of window. On some graphics cards it would wrap lines and hide the MaxMTU value.
Version 2.01
-- The "Update Registry" option on the popup menu is disabled/enabled in synchronisation with the "Update Registry" Button.
-- Fixed bug where clicking on Trackbar would cause the "Update Registry" Button to be enabled even if the TrackBar hadn't moved.
-- Added an "Exit WebSpeed" option to the popup menu.
-- Fixed a bug where WebSpeed didn't correctly identify that TCP/IP was installed if TCP/IP was in a key greater than \NetTrans\0009. (oops!)
Version 2.0
-- Started again :) Reduced executable size by around 20 kb.
-- Fixed a bug where, if you tried to start WebSpeed from a shortcut with the shortcut's run property set to "minimised", you got some very funny effects. My thanks go to Arsene von Wyss for help with that piece of code.
-- You now have more control over which values are written to the Registry. You can write any or all values as you want.
-- Auto MTU Discovery can be enabled (PMTUDiscovery set to 1), Disabled (Set to 0) or Removed (key deleted from registry). Enabling it causes the MaxMTU and RWIN "Remove" options to be selected by default. If you really want to set MaxMTU and RWIN with Auto enabled then just click the appropriate enable options but I don't recommend it.
-- While Auto MTU Discovery is enabled, MaxMTU, RWIN, MSS and Multiplier values are grayed out. If you enable MaxMTU or RWIN the values will remain greyed out as a warning (MaxMTU and RWIN values will be correctly written to the registry if the Update button is clicked).
-- Added MTU Black Hole Detection to detect routers that do not return fragmentation messages. This, like AutoMTU, can be enabled, disabled or removed.
-- Added keyboard shortcuts to the program buttons.
-- Changed minimum allowable MaxMTU value to 68 (the IP4 Standard).
Version 1.7
-- Optimised logic and subroutine usage.
-- Corrected bug in TCP/IP detection. WebSpeed now closes gracefully if TCP/IP not detected.
-- Changing MTU or dragging the slider deselects the Remove and Auto radio buttons if they were selected. If one of the other radio buttons were selected then they are not changed.
-- If AutoMTU is detected on startup, and one of the other radio buttons is subsequentlly selected before any values are changed, the Update button is automatically enabled. In previous versions it would stay greyed out.
-- Added option on Popup menu to view ReadMe.
-- Added option on Popup menu to Set AutoMTU.
Version 1.6
-- Removed bug where AutoMTU Detection not properly removed from registry.
-- Enabled checking of registry for TCP/IP in keys other than NetTrans\0002.
Version 1.5
-- Added check for multiple instances. You cannot now run multiple copies of WebSpeed.
-- Verifies that the NetTrans/0002 key actually contains the TCP/IP settings.
-- Corrected a small typo in the about box :(
-- After typing new MaxMTU value, pressing ENTER selects "OK" and returns to main form.
-- Enabled tabbing through Radio Buttons.
-- Added support for Automatic MTU Detection.
Version 1.4
-- You can remove the registry entries.
FAREWELL
========
I hope you find this utility helpful. Please read some of the recommended documents (or RFC1191) to fully understand what you are trying to achieve. There is a link to my FAQ on the "About" page.